<?php
namespace Tbf\Bundle\UploadBundle;
use Tbf\Component\FileSystem\FileSystemFunction;

/**
 * 本地文件实现的blob
 */
class FileBlob implements BlobInterface
{
    protected $path;
    protected $extension;

    /**
     * @param $path string 这个文件的路径
     * @param $extension string 这个文件本来应该的扩展名
     */
    public function __construct($path,$extension = null)
    {
        $this->path = $path;
        $this->extension = $extension;
    }
    /**
     * 类型,扩展名
     * @return string
     */
    public function getExtension()
    {
        return $this->extension;
    }

    /**
     * 大小
     * @return int
     * @return error
     */
    public function getSize()
    {
        return FileSystemFunction::size($this->path);
    }

    /**
     * 全部内容,一次读取
     * @return string
     * @return error
     */
    public function getContent()
    {
        return FileSystemFunction::getContent($this->path);
    }

    /**
     * 写入全部内容,一次写入
     * @param $string string
     * @return error
     */
    public function setContent($content)
    {
        return FileSystemFunction::putContent($this->path,$content);
    }

    /**
     * 内容的md5值
     * @return string
     */
    public function getContentMd5()
    {
        return md5_file($this->path);
    }

    /**
     * 保存到某个文件中(删除源文件)
     * @param string $file_path
     * @return string|null error
     */
    public function saveToFilePath($file_path)
    {
        FileSystemFunction::copyOneFile($this->path,$file_path);
        return null;
    }

}
